package cn.com.zpark.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @PackageName: cn.com.zpark.session
 * @ClassName: SessionDemo06
 * @Description:
 * @author: RZS
 * @date: 2021/11/17  16:45
 */
@WebServlet("/sd6.do")
public class SessionDemo06 extends HttpServlet {
    /**
     * 作业：
     *      要求：记录用户访问网站的时间
     *      规则：
     *          1、当用户是第一次访问的时候，只展示第一次访问时间
     *          2、当用户不是第一次访问的是展示本次访问时间，以及上一次访问时间
     */
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取session对象
        HttpSession session = request.getSession();
        // 解决响应乱码问题
        response.setContentType("text/html;charset=utf-8");
        // 获取响应字符流
        PrintWriter pw = response.getWriter();

        // 获取session中绑定的用户访问时间
        String date = (String)session.getAttribute("date");

        // 获取当前系统时间
        Date d1 = new Date();
        // 创建时间转换工具对象
        SimpleDateFormat sdm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        // 判断用户是否为第一次访问
        if(date == null){
            /**
             * 第一次访问
             *      1、将第一次访问时间绑定到session对象中
             *      2、响应第一次访问时间
             */
            String dd1 = sdm.format(d1);
            // 将第一次访问时间绑定到session对象中
            session.setAttribute("date", dd1);
            pw.write("<h1>第一次访问时间为："+dd1+"</h1>");
        }else{
            /**
             * 不是第一次访问
             *      1、将上一次访问系统时间响应回去
             *      2、将本次访问系统时间绑定到session对象中
             *      3、将本次访问系统时间响应到浏览器
             */
            pw.write("<h1>上一次访问系统时间为："+date+"</h1>");
            String d2 = sdm.format(d1);
            session.setAttribute("date", d2);
            pw.write("<h1>本次访问系统时间为："+d2+"</h1>");
        }
    }
}
